package com.electromagnetic.industry.software.manage.service;

import com.electromagnetic.industry.software.common.resp.ElectromagneticResult;
import com.electromagnetic.industry.software.manage.pojo.req.FolderResortDTO;
import com.electromagnetic.industry.software.manage.pojo.req.QueryPublishStatus;

import java.util.List;

public interface EdPrjService {

    /**
     * 创建一个新的工程
     *
     * @param prjName 新的工程名
     */
    ElectromagneticResult<?> createNewPrj(String prjName, int dataOwnCode);

    /**
     * 修改项目名称
     *
     * @param prjId
     * @param newPrjName
     * @return
     */
    ElectromagneticResult<?> modifyPrjName(String prjId, String newPrjName, int dataOwnCode);

    /**
     * 删除一个项目，做逻辑删除
     *
     * @param prjId
     * @return
     */
    ElectromagneticResult<?> delete(String prjId, int dataOwnCode);

    /**
     * 添加子集
     *
     * @param parentId
     * @param folderName
     * @return
     */
    ElectromagneticResult<?> addFolder(String parentId, String folderName, int dataOwnCode);

    /**
     * 查询所有项目
     *
     * @return
     */
    ElectromagneticResult<?> queryAllPrjInfo(int dataOwnCode, String prjName);

    /**
     * 子集拖拽重排序
     *
     * @param folderResortDTOList
     * @return
     */
    ElectromagneticResult<?> folderResort(List<FolderResortDTO> folderResortDTOList);

    /**
     * 项目发布
     *
     * @param prjId
     * @return
     */
    ElectromagneticResult<?> publish(String prjId, int dataOwnCode);

    /**
     * 删除子集
     *
     * @param id
     * @return
     */
    ElectromagneticResult<?> deleteFolder(String id, int dataOwnCode);

    /**
     * 层级沿用
     *
     * @param sourceId
     * @param targetId
     * @return
     */
    ElectromagneticResult<?> follow(String sourceId, String targetId, int dataOwnCode);

    /**
     * 修改子集名称
     *
     * @param id
     * @param newFolderName
     * @return
     */
    ElectromagneticResult<?> modifyFolder(String id, String newFolderName, int dataOwnCode);

    /**
     * 获取项目的发布状态
     *
     * @param queryPublishStatus
     * @return
     */
    ElectromagneticResult<?> publishStatus(QueryPublishStatus queryPublishStatus, int dataOwnCode);
}
